unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, 
  Controls, Forms, Dialogs,Grids, StdCtrls;

type
  TMainForm = class(TForm)
    Grid: TStringGrid;
    buttLoad: TButton;
    buttSave: TButton;

    procedure buttLoadClick(Sender: TObject);
    procedure buttSaveClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.buttLoadClick(Sender: TObject);
var F:TextFile;
        stateName:String[20];
        CapitalName:String[20];
        rowNum:Integer;
begin
   AssignFile(F,'Data.txt');
   reset(F);

   rowNum:=0;
   Grid.Cells[1,0]:='State';
   Grid.Cells[2,0]:='Capital';
 try
   while not eof(f) do begin
     readln(F,StateName, CapitalName);
     inc(rowNum);
     Grid.RowCount:=rowNum;
     Grid.Cells[0,rowNum]:=IntToStr(rowNum); //Ch so dong
     Grid.Cells[1,rowNum]:=StateName;
     Grid.Cells[2,rowNum]:=CapitalName;
  
   end;
   Grid.FixedRows:=1;  

 finally
   CloseFile(F);
end;
end;

procedure TMainForm.buttSaveClick(Sender: TObject);
var F:TextFile;
    stateName:String[20];
    CapitalName:String[20];
    i:integer;
   function padField(data:string;len:integer):string;
   var i:integer;
   begin
      result:=copy(data,1,20);
      i:=length(result);
      while i<20 do begin  
                  result:=result+#32; 
                  inc(i); 
       end;
   end;

begin
   AssignFile(F,'Data.txt');
   Rewrite(F);
 try
   For i:=1 to Grid.RowCount do begin
       StateName:=Grid.Cells[1,i];
       CapitalName:=Grid.Cells[2,i];
       writeln(F, padField(StateName,20), 
                            padField(CapitalName,20));
   end;
 
 finally
   CloseFile(F);
 end;
end;

end.
